package com.ys.day29.Reflect.p6Reflect与Constructor对象;

import java.lang.reflect.Constructor;
import java.util.ArrayList;

/**
 * 描述: P1获得Class所有的构造方法
 * * 场景：获取ArrayList的Class所有构造方法签名
 *  * 步骤：
 *  * 1 反射入口获取ArrayList的Class对象信息
 *  * 2 调用Class对象的getConstructors()方法获取所有构造方法签名
 *  * 3 遍历Constructor构造方法签名对象
 *  * 4 打印构造方法签名信息
 * @author CodeYang
 * @version 2021/1/11 21:02
 */
public class P1获得Class的构造方法 {

    public static void main(String[] args) {

       method01();
       method02();

    }

    /**
     * 根据指定参数类型(参数类型列表) 来获得构造方法
     */
    private static void method02() {
        Class<ArrayList> arrayListClass = ArrayList.class;
        Class<?>[] parpm = {int.class};
        try {
            Constructor<ArrayList> constructor = arrayListClass.getConstructor(parpm);
            //public java.util.ArrayList(int)
            System.out.println(constructor);
        } catch (NoSuchMethodException e) {


        }


    }

    /**
     *   获得所有的构造方法
     */
    private static void method01() {
        Class<ArrayList> aClass = ArrayList.class;
        Constructor<?>[] constructors = aClass.getConstructors();
        /**
         * 获得所有的构造方法
         * public java.util.ArrayList(java.util.Collection)
         * public java.util.ArrayList()
         * public java.util.ArrayList(int)
         */
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }

    }
}
